package com.project.mapper;

import com.github.pagehelper.PageInfo;
import com.project.bean.StudentBean;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.util.List;

public interface IStudentMapper {
    /**
     * 学生入住
     * @param studentBean 学生信息对象
     */
    void checkIn(StudentBean studentBean);

    /**
     * 学生退房
     * @param studentId 学生id
     */
    @Update("UPDATE t_student SET fk_roomId =NULL WHERE pk_stuId=#{id}")
    void checkOut(Integer studentId);

    /**
     * 学生换房
     * @param studentId 学生id
     * @param newRoomId 新房间的id
     */
    @Update("UPDATE t_student set fk_roomId = #{newRoomId} WHERE pk_stuId=#{studentId}")
    void changeRoom(@Param("studentId") Integer studentId, @Param("newRoomId") Integer newRoomId);

    /**
     * 按id查询学生信息，同时查询房间地址，班级名称
     * @param studentId 学生id
     * @return 学生信息对象
     */
    StudentBean findById(Integer studentId);

    /**
     * 动态条件查询学生，同时查询房间的地址的班级名称
     * @param name 学生姓名（模糊匹配）
     * @param className 所在班级
     * @param roomName 入住的房间
     * @param pageNum 分页查询的页码
     * @return 符合条件的学生信息对象列表和分页信息对象
     */
    List<StudentBean> findStudents(@Param("name") String name,
                      @Param("className") String className,
                      @Param("roomName") String roomName,
                      @Param("pageNum") Integer pageNum);
}
